package cn.youframe.frame.exception;

import cn.youframe.frame.base.YFBase;

/**
 * User: Administrator
 * DateTime: 12-7-22 下午1:30
 * Desc:
 */
public class AppException extends YfRuntimeException implements YFBase {
    /**
     * @param errorCode 错误代码，此错误代码将对应一条可国际化的异常描述，此类似与Oracle等的错误代码
     * @param messageArgs 异常描述的参数，用于错误描述中仅有一个参数的情况
     */
    public AppException(String errorCode, Object... messageArgs) {
        super(errorCode, messageArgs);
    }

    /**
     * @param logMessage 记录日志的消息
     */
    public AppException(String logMessage) {
        super(logMessage);
    }

    /**
     * @param logMessage 记录日志的消息
     * @param errorCode 错误代码，此错误代码将对应一条可国际化的异常描述，此类似与Oracle等的错误代码
     */
    public AppException(String logMessage, String errorCode) {
        super(logMessage, errorCode);
    }

    /**
     * @param logMessage 记录日志的消息
     * @param errorCode 错误代码，此错误代码将对应一条可国际化的异常描述，此类似与Oracle等的错误代码
     * @param messageArgs 异常描述的参数，用于错误描述中仅有一个或多个参数的情况
     */
    public AppException(String logMessage, String errorCode, Object... messageArgs) {
        super(logMessage, errorCode, messageArgs);
    }

    /**
     * @param logMessage 记录日志的消息
     * @param errorCode 错误代码，此错误代码将对应一条可国际化的异常描述，此类似与Oracle等的错误代码
     * @param messageArgs 异常描述的参数，用于错误描述中仅有一个或多个参数的情况
     */
    public AppException(String logMessage, String errorCode, String busiMsg,Object... messageArgs) {
        super(logMessage, errorCode, String.format(busiMsg,messageArgs));
    }

    /**
     * @param messageArgs 记录日志的消息
     * @param errorCode 错误代码，此错误代码将对应一条可国际化的异常描述，此类似与Oracle等的错误代码
     * @param messageArgs 异常描述的参数，用于错误描述中仅有一个或多个参数的情况
     */
    public AppException(Throwable cause, String errorCode, String busiMsg,Object... messageArgs) {
        super(cause, errorCode, String.format(busiMsg,messageArgs));
    }

    /**
     * @param cause 引起异常的原始异常
     * @param logMessage 记录日志的消息
     */
    public AppException(Throwable cause, String logMessage) {
        super(cause, logMessage);
    }

    /**
     * @param cause 引起异常的原始异常
     * @param errorCode 错误代码，此错误代码将对应一条可国际化的异常描述，此类似与Oracle等的错误代码
     * @param busiMsg busiMsg，用于错误描述中仅有一个或多个参数的情况
     */
    public AppException(Throwable cause,String errorCode, String busiMsg) {
        super(cause, cause.getMessage(), errorCode, busiMsg);
    }
}
